#pragma once

#include "ILevel.h"

namespace LevelSingleDockState {
	enum Enum {
		START,
		WAITING_FOR_FIRST_DOCKING,
		WAIT_FOR_START_OF_THIRD_SHIP,
		WAITING_FOR_FIRST_SHIP_EXIT,
		START_SECOND_WAVE,
		WAIT_THIRD_WAVE,
		START_THIRD_WAVE,
		START_THIRD_WAVE_TWO,
		START_THIRD_WAVE_THREE,
		WAIT_FOR_END,
	};
}

class LevelSingleDock : public ILevel {

public:

	virtual ~LevelSingleDock();

	void Load( Dock* docks, GameplayBackground* background );
	void Unload();
	
	LevelUpdateReturnStatus::Enum Update( DockType::Enum *type, CIwFVec2* p1, CIwFVec2* p2, float dt );
	
	void Draw ();
	
	void ShipAdded( Ship *ship );
	void ShipOutOfScreen( Ship *ship );
	
private:

	int m_active_ships;

	Ship* m_ship;
	LevelSingleDockState::Enum m_state;
	float m_time_for_next_ship;
};